#pragma once

#include "Action.h"
#include "StateFwd.h"
#include "TransferFwd.h"

class Transfer : public QObject
{
    Q_OBJECT

public:
    void AddAction(ActionPtr action);
    void SetDestination(StatePtr state);

public:
    void Perform();

signals:
    void NextState(StatePtr state);

private:
    void PerformActions();
    void LeaveState();

private:
    StatePtr     _destination;
    ActionVector _actions;
};